﻿<?xml version="1.0"?>
<doc>
  <assembly>
    <name>Neovolve.Toolkit.Unity</name>
  </assembly>
  <members>
    <member name="T:Neovolve.Toolkit.Unity.UnityServiceHost">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.UnityServiceHost" />
              class provides a service host that creates WCF service instances using Unity.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityServiceHost.#ctor(System.Type,Microsoft.Practices.Unity.IUnityContainer,System.Uri[])">
      <summary>
            Initializes a new instance of the <see cref="T:Neovolve.Toolkit.Unity.UnityServiceHost" /> class.
            </summary>
      <param name="serviceType">
            Type of the service.
            </param>
      <param name="container">
            The container.
            </param>
      <param name="baseAddresses">
            The base addresses.
            </param>
      <exception cref="T:System.ArgumentNullException">
            The <paramref name="container" /> value is <c>null</c>.
            </exception>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityServiceHost.OnOpening">
      <summary>
            Invoked during the transition of a communication object into the opening state.
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.UnityServiceHost.Container">
      <summary>
            Gets or sets the container.
            </summary>
      <value>
            The container.
            </value>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.UnityServiceElement">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.UnityServiceElement" />
              class is used to provide configuration support for defining a unity container via a service behavior.
            </summary>
      <remarks>
        <note>
            Use Neovolve.Toolkit.Server.Unity.UnityServiceHostFactory if custom unity configuration section names or defined unity container names are not required.
                UnityServiceHostFactory has less impact on configuration compared to defining the configuration to use this custom behavior element.
              </note>
        <para>
            The <see cref="T:Neovolve.Toolkit.Unity.UnityServiceElement" /> allows for custom Unity configuration section names and defined Unity container names to be used
                when creating service instances with Unity.
              </para>
        <para>
            The <see cref="P:Neovolve.Toolkit.Unity.UnityServiceElement.UnitySectionName" />, <see cref="P:Neovolve.Toolkit.Unity.UnityServiceElement.UnityContainerName" /> and <see cref="P:Neovolve.Toolkit.Unity.UnityServiceElement.UnityResolveName" /> properties are optional. 
                The value of <c>unity</c> will be used if no value is provided for <see cref="P:Neovolve.Toolkit.Unity.UnityServiceElement.UnitySectionName" />.
                The default container will be resolved if no value is provided for <see cref="P:Neovolve.Toolkit.Unity.UnityServiceElement.UnityContainerName" />.
              </para>
      </remarks>
      <example>
        <para>
            The following configuration defines a custom unity configuration section name and defined unity container name to create a WCF service instance.
              </para>
        <code lang="xml" title="Example of web.config"><![CDATA[
            <?xml version="1.0" ?>
            <configuration>
                <configSections>
                    <section name="customUnitySection"
                             type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
                </configSections>
                <customUnitySection>
                    <containers>
                        <container name="customContainer">
                            <register type="Neovolve.Toolkit.Unity.WebIntegrationTests.TestService, Neovolve.Toolkit.Unity.WebIntegrationTests"
                                name="namedResolution">
                                <constructor>
                                    <param name="hashCalculator">
                                        <dependency/>
                                    </param>
                                </constructor>
                            </register>
                            <register type="System.Security.Cryptography.HashAlgorithm, mscorlib"
                                mapTo="System.Security.Cryptography.SHA256CryptoServiceProvider, System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
                            <extensions>
                                <add type="Neovolve.Toolkit.Unity.DisposableStrategyExtension, Neovolve.Toolkit.Unity"/>
                            </extensions>
                        </container>
                    </containers>
                </customUnitySection>
                <system.serviceModel>
                    <behaviors>
                        <serviceBehaviors>
                            <behavior name="UnityBehavior">
                                <unityService unitySectionName="customUnitySection"
                                              unityContainerName="customContainer"
                                              unityResolveName="namedResolution"/>
                            </behavior>
                        </serviceBehaviors>
                    </behaviors>
                    <extensions>
                        <behaviorExtensions>
                            <add name="unityService"
                                 type="Neovolve.Toolkit.Unity.UnityServiceElement, Neovolve.Toolkit.Unity, Version=1.0.0.0, Culture=neutral, PublicKeyToken=911824a9aa319cb2"/>
                        </behaviorExtensions>
                    </extensions>
                    <services>
                        <service behaviorConfiguration="UnityBehavior"
                                 name="Neovolve.Toolkit.Unity.WebIntegrationTests.TestService">
                            <endpoint address=""
                                      binding="basicHttpBinding"
                                      bindingConfiguration=""
                                      contract="Neovolve.Toolkit.Unity.WebIntegrationTests.ITestService"/>
                        </service>
                    </services>
                </system.serviceModel>
            </configuration> 
            ]]></code>
      </example>
    </member>
    <member name="F:Neovolve.Toolkit.Unity.UnityServiceElement.UnityContainerNameAttributeName">
      <summary>
            Defines the attribute name of the unity container name configuration.
            </summary>
    </member>
    <member name="F:Neovolve.Toolkit.Unity.UnityServiceElement.UnityResolveNameAttributeName">
      <summary>
            Defines the attribute name of the unity resolution name configuration.
            </summary>
    </member>
    <member name="F:Neovolve.Toolkit.Unity.UnityServiceElement.UnitySectionNameAttributeName">
      <summary>
            Defines the attribute name of the unity section name configuration.
            </summary>
    </member>
    <member name="F:Neovolve.Toolkit.Unity.UnityServiceElement._properties">
      <summary>
            Stores the set of properties for the element.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityServiceElement.CopyFrom(System.ServiceModel.Configuration.ServiceModelExtensionElement)">
      <summary>
            Copies the content of the specified configuration element to this configuration element.
            </summary>
      <param name="from">
            The configuration element to be copied.
            </param>
      <exception cref="T:System.ArgumentNullException">
        <paramref name="from" /> is null.
            </exception>
      <exception cref="T:System.Configuration.ConfigurationErrorsException">
            The configuration file is read-only.
            </exception>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityServiceElement.CreateBehavior">
      <summary>
            Creates a behavior extension based on the current configuration settings.
            </summary>
      <returns>
            The behavior extension.
            </returns>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.UnityServiceElement.BehaviorType">
      <summary>
            Gets the type of behavior.
            </summary>
      <value>
            The behavior type.
            </value>
      <returns>
            A <see cref="T:System.Type" />.
            </returns>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.UnityServiceElement.UnityContainerName">
      <summary>
            Gets or sets the name of the unity container.
            </summary>
      <remarks>
            This property is optional. The default container will be resolved if no value is specified.
            </remarks>
      <value>
            The name of the unity container.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.UnityServiceElement.UnityResolveName">
      <summary>
            Gets or sets the name of the unity resolve action.
            </summary>
      <value>
            The name of the unity resolve action.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.UnityServiceElement.UnitySectionName">
      <summary>
            Gets or sets the name of the unity section.
            </summary>
      <remarks>
            This property is optional. The value of <c>unity</c> will be used if no value is defined.
            </remarks>
      <value>
            The name of the unity section.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.UnityServiceElement.Properties">
      <summary>
            Gets the collection of properties.
            </summary>
      <value>
            The properties.
            </value>
      <returns>
            The <see cref="T:System.Configuration.ConfigurationPropertyCollection" /> of properties for the element.
            </returns>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.NamespaceDoc">
      <summary>
            The Neovolve.Toolkit.Unity namespace contains classes that provide Unity dependency injection related functionality.
            </summary>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.SectionExtensionInitiator">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.SectionExtensionInitiator" />
              class is used to initiate a <see cref="T:Microsoft.Practices.Unity.Configuration.SectionExtension" /> 
              with configuration element support for custom parameter injection values.
            </summary>
      <example>
        <para>
            The following example demonstrates how the <see cref="T:Neovolve.Toolkit.Unity.SectionExtensionInitiator" /> class is configured for a unity configuration section.
              </para>
        <code lang="xml" title="Application configuration"><![CDATA[<?xml version="1.0"
                  encoding="utf-8" ?>
            <configuration>
              <configSections>
                <section name="unity"
                         type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
              </configSections>
              <unity>
                <sectionExtension type="Neovolve.Toolkit.Unity.SectionExtensionInitiator, Neovolve.Toolkit.Unity"/>
                <containers>
                  <container>
                  </container>
                </containers>
              </unity>
            </configuration>]]></code>
      </example>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.SectionExtensionInitiator.AddExtensions(Microsoft.Practices.Unity.Configuration.SectionExtensionContext)">
      <summary>
            Adds the extensions.
            </summary>
      <param name="context">
            The context.
            </param>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.BuildTreeTracker">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.BuildTreeTracker" />
              class is used to track build trees created by the container.
            </summary>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.IBuildTreeTracker">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.IBuildTreeTracker" />
              interface is used to track build trees as they are created and destroyed.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.IBuildTreeTracker.DisposeAllTrees">
      <summary>
            Disposes all build trees.
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.IBuildTreeTracker.BuildTrees">
      <summary>
            Gets the build trees.
            </summary>
      <value>
            The build trees.
            </value>
    </member>
    <member name="F:Neovolve.Toolkit.Unity.BuildTreeTracker._currentBuildNode">
      <summary>
            The _current build node.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeTracker.#ctor">
      <summary>
            Initializes a new instance of the <see cref="T:Neovolve.Toolkit.Unity.BuildTreeTracker" /> class.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeTracker.#ctor(Neovolve.Toolkit.Unity.IBuildTreeStore)">
      <summary>
            Initializes a new instance of the <see cref="T:Neovolve.Toolkit.Unity.BuildTreeTracker" /> class.
            </summary>
      <param name="store">
            The store.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeTracker.CreateTrackedDeferredResolution(System.Delegate)">
      <summary>
            Creates the tracked deferred resolution.
            </summary>
      <param name="originalDeferredFunction">
            The original deferred function.
            </param>
      <returns>
            A <see cref="T:System.MulticastDelegate" /> instance.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeTracker.DisposeAllTrees">
      <summary>
            Disposes all trees.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeTracker.PostBuildUp(Microsoft.Practices.ObjectBuilder2.IBuilderContext)">
      <summary>
            Called during the chain of responsibility for a build operation. The
              PostBuildUp method is called when the chain has finished the PreBuildUp
              phase and executes in reverse order from the PreBuildUp calls.
            </summary>
      <param name="context">
            Context of the build operation.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeTracker.PostTearDown(Microsoft.Practices.ObjectBuilder2.IBuilderContext)">
      <summary>
            Called during the chain of responsibility for a teardown operation. The
              PostTearDown method is called when the chain has finished the PreTearDown
              phase and executes in reverse order from the PreTearDown calls.
            </summary>
      <param name="context">
            Context of the teardown operation.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeTracker.PreBuildUp(Microsoft.Practices.ObjectBuilder2.IBuilderContext)">
      <summary>
            Called during the chain of responsibility for a build operation. The
              PreBuildUp method is called when the chain is being executed in the
              forward direction.
            </summary>
      <param name="context">
            Context of the build operation.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeTracker.AssignInstanceToCurrentTreeNode(Microsoft.Practices.ObjectBuilder2.NamedTypeBuildKey,System.Object)">
      <summary>
            Assigns the instance to current tree node.
            </summary>
      <param name="buildKey">
            The build key.
            </param>
      <param name="instance">
            The instance.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeTracker.FindNodesInLifetimeManager(Microsoft.Practices.ObjectBuilder2.IBuilderContext,Neovolve.Toolkit.Unity.BuildTreeItemNode,System.Collections.Generic.IDictionary{System.Object,Neovolve.Toolkit.Unity.BuildTreeItemNode})">
      <summary>
            Finds the nodes in lifetime manager.
            </summary>
      <param name="context">
            The builder context.
            </param>
      <param name="node">
            The node to check.
            </param>
      <param name="nodesInLifetimeManager">
            The nodes in lifetime manager.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeTracker.IsTreeNodeReferenceValid(Neovolve.Toolkit.Unity.BuildTreeItemNode)">
      <summary>
            Determines whether the specified node has a valid reference.
            </summary>
      <param name="node">
            The node to check.
            </param>
      <returns>
        <c>true</c> if the specified node has a valid reference; otherwise, <c>false</c>.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeTracker.DisposeDeadTrees(Microsoft.Practices.ObjectBuilder2.IBuilderContext)">
      <summary>
            Disposes the dead trees.
            </summary>
      <param name="context">
            The context.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeTracker.DisposeTree(Microsoft.Practices.ObjectBuilder2.IBuilderContext,Neovolve.Toolkit.Unity.BuildTreeItemNode)">
      <summary>
            Disposes the tree.
            </summary>
      <param name="context">
            The context.
            </param>
      <param name="buildTree">
            The build tree.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeTracker.PromoteLifetimeManagerNodesToBuildTrees(Microsoft.Practices.ObjectBuilder2.IBuilderContext,Neovolve.Toolkit.Unity.BuildTreeItemNode)">
      <summary>
            Promotes the lifetime manager nodes to build trees.
            </summary>
      <param name="context">
            The context.
            </param>
      <param name="buildTree">
            The build tree.
            </param>
      <requires exception="T:System.ArgumentNullException">context != null</requires>
      <exception cref="T:System.ArgumentNullException">context == null</exception>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.BuildTreeTracker.CurrentBuildNode">
      <summary>
            Gets or sets the current build node.
            </summary>
      <value>
            The current build node.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.BuildTreeTracker.BuildTrees">
      <summary>
            Gets the build trees.
            </summary>
      <value>
            The build trees.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.BuildTreeTracker.Store">
      <summary>
            Gets or sets the store.
            </summary>
      <value>
            The store.
            </value>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.BuildTreeRecovery">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.BuildTreeRecovery" />
              class is used to repair the build tree and a build failure occurs.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeRecovery.#ctor(Microsoft.Practices.ObjectBuilder2.IBuilderContext,Neovolve.Toolkit.Unity.BuildTreeItemNode,System.Action{Neovolve.Toolkit.Unity.BuildTreeItemNode})">
      <summary>
            Initializes a new instance of the <see cref="T:Neovolve.Toolkit.Unity.BuildTreeRecovery" /> class.
            </summary>
      <param name="context">
            The context.
            </param>
      <param name="failedNode">
            The current node.
            </param>
      <param name="failureAction">
            The failure action.
            </param>
      <requires exception="T:System.ArgumentNullException">context != null</requires>
      <exception cref="T:System.ArgumentNullException">context == null</exception>
      <requires exception="T:System.ArgumentNullException">failedNode != null</requires>
      <exception cref="T:System.ArgumentNullException">failedNode == null</exception>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeRecovery.Recover">
      <summary>
            A method that does whatever is needed to clean up
              as part of cleaning up after an exception.
            </summary>
      <remarks>
            Don't do anything that could throw in this method,
              it will cause later recover operations to get skipped
              and play real havoc with the stack trace.
            </remarks>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.BuildTreeRecovery.Context">
      <summary>
            Gets the context.
            </summary>
      <value>
            The context.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.BuildTreeRecovery.FailedNode">
      <summary>
            Gets the failed node.
            </summary>
      <value>
            The failed node.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.BuildTreeRecovery.FailureAction">
      <summary>
            Gets the failure action.
            </summary>
      <value>
            The failure action.
            </value>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement" />
              class is used to configure a Unity injection parameter value to be determined from an AppSettings value.
            </summary>
      <remarks>
        <para>
            The <see cref="T:System.ComponentModel.TypeConverter" /> returned from <see cref="M:System.ComponentModel.TypeDescriptor.GetConverter(System.Type)">TypeDescriptor.GetConverter(Type)</see> 
                will be used if the type of parameter is not a <see cref="T:System.String" /> and no value has been defined for
                <see cref="P:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement.TypeConverterTypeName" />.
              </para>
        <para>
            The <see cref="T:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement" /> is configured for a container by the <see cref="T:Neovolve.Toolkit.Unity.SectionExtensionInitiator" /> class.
              </para>
        <note>
            The <see cref="T:Neovolve.Toolkit.Unity.SectionExtensionInitiator" /> class must be configured for the container in order for the appSetting injection element
                to be understood.
              </note>
      </remarks>
      <example>
        <para>
            The following example shows how the element is configured and used without a type converter. 
                It implicitly uses the type converter for <see cref="T:System.Int64" /> to convert the AppSetting value to the correct type
                before it is injected into the constructor.
              </para>
        <code lang="xml" title="Application configuration without type converter"><![CDATA[<?xml version="1.0"
                  encoding="utf-8" ?>
            <configuration>
              <configSections>
                <section name="unity"
                         type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
              </configSections>
              <appSettings>
                <add key="MyTestSetting"
                     value="234234"/>
              </appSettings>
              <unity>
                <sectionExtension type="Neovolve.Toolkit.Unity.SectionExtensionInitiator, Neovolve.Toolkit.Unity"/>
                <containers>
                  <container>
                    <register type="Neovolve.Toolkit.Unity.IntegrationTests.IDoSomething, Neovolve.Toolkit.Unity.IntegrationTests"
                              mapTo="Neovolve.Toolkit.Unity.IntegrationTests.CachedSomethingDone, Neovolve.Toolkit.Unity.IntegrationTests">
                      <constructor>
                        <param name="dependency">
                          <dependency name="CacheSomething"/>
                        </param>
                        <param name="maxAgeInMilliseconds"
                               type="System.Int64, mscorlib, Version=2.0.0.0">
                          <appSetting appSettingKey="MyTestSetting"/>
                        </param>
                      </constructor>
                    </register>
                    <register type="Neovolve.Toolkit.Unity.IntegrationTests.IDoSomething, Neovolve.Toolkit.Unity.IntegrationTests"
                              mapTo="Neovolve.Toolkit.Unity.IntegrationTests.SomethingDone, Neovolve.Toolkit.Unity.IntegrationTests"
                              name="CacheSomething"/> 
                  </container>
                </containers>
              </unity>
            </configuration>]]></code>
        <para>
            The following example demonstrates how the same scenario can be achieved by specifying the type converter to use. 
              </para>
        <code lang="xml" title="Application configuration with a type converter defined"><![CDATA[<?xml version="1.0"
                  encoding="utf-8" ?>
            <configuration>
              <configSections>
                <section name="unity"
                         type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
              </configSections>
              <appSettings>
                <add key="MyTestSetting"
                     value="234234"/>
              </appSettings>
              <unity>
                <sectionExtension type="Neovolve.Toolkit.Unity.SectionExtensionInitiator, Neovolve.Toolkit.Unity"/>
                <containers>
                  <container>
                    <register type="Neovolve.Toolkit.Unity.IntegrationTests.IDoSomething, Neovolve.Toolkit.Unity.IntegrationTests"
                              mapTo="Neovolve.Toolkit.Unity.IntegrationTests.CachedSomethingDone, Neovolve.Toolkit.Unity.IntegrationTests">
                      <constructor>
                        <param name="dependency">
                          <dependency name="CacheSomething"/>
                        </param>
                        <param name="maxAgeInMilliseconds"
                               type="System.Int64, mscorlib, Version=2.0.0.0">
                          <appSetting appSettingKey="MyTestSetting"
                                      typeConverter="System.ComponentModel.Int64Converter, System, Version=2.0.0.0"/>
                        </param>
                      </constructor>
                    </register>
                    <register type="Neovolve.Toolkit.Unity.IntegrationTests.IDoSomething, Neovolve.Toolkit.Unity.IntegrationTests"
                              mapTo="Neovolve.Toolkit.Unity.IntegrationTests.SomethingDone, Neovolve.Toolkit.Unity.IntegrationTests"
                              name="CacheSomething"/> 
                  </container>
                </containers>
              </unity>
            </configuration>]]></code>
      </example>
      <seealso cref="T:Neovolve.Toolkit.Unity.SectionExtensionInitiator" />
    </member>
    <member name="F:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement.AppSettingKeyAttributeName">
      <summary>
            Defines the attribute name for the <see cref="P:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement.AppSettingKey" /> property.
            </summary>
    </member>
    <member name="F:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement.ElementName">
      <summary>
            Defines the configuration element name used to identify this type of parameter value element.
            </summary>
    </member>
    <member name="F:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement.TypeConverterAttributeName">
      <summary>
            Defines the attribute name for the <see cref="P:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement.TypeConverterTypeName" /> property.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement.#ctor">
      <summary>
            Initializes a new instance of the <see cref="T:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement" /> class.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement.CreateValue(System.Type)">
      <summary>
            Creates the value.
            </summary>
      <param name="parameterType">
            Type of the parameter.
            </param>
      <returns>
            A <see cref="T:System.Object" /> instance.
            </returns>
      <exception cref="T:System.ArgumentNullException">
            The <paramref name="parameterType" /> value is <c>null</c>.
            </exception>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement.GetInjectionParameterValue(Microsoft.Practices.Unity.IUnityContainer,System.Type)">
      <summary>
            Generate an <see cref="T:Microsoft.Practices.Unity.InjectionParameterValue" /> object
              that will be used to configure the container for a type registration.
            </summary>
      <param name="container">
            Container that is being configured. Supplied in order
              to let custom implementations retrieve services; do not configure the container
              directly in this method.
            </param>
      <param name="parameterType">
            Type of the.
            </param>
      <returns>
            An <see cref="T:Microsoft.Practices.Unity.InjectionParameterValue" /> instance.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement.GetTypeConverter(System.Type)">
      <summary>
            Gets the type converter.
            </summary>
      <param name="parameterType">
            Type of the parameter.
            </param>
      <returns>
            A <see cref="T:System.ComponentModel.TypeConverter" /> instance.
            </returns>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement.AppSettingKey">
      <summary>
            Gets or sets the app setting key.
            </summary>
      <value>
            The app setting key.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement.TypeConverterTypeName">
      <summary>
            Gets or sets the name of the type converter type.
            </summary>
      <value>
            The name of the type converter type.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.AppSettingsParameterValueElement.Config">
      <summary>
            Gets or sets the config.
            </summary>
      <value>
            The config.
            </value>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.UnityInstanceProvider">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.UnityInstanceProvider" />
              class is used by WCF to create a new instance of a service contract.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityInstanceProvider.#ctor(Microsoft.Practices.Unity.IUnityContainer,System.Type,System.String)">
      <summary>
            Initializes a new instance of the <see cref="T:Neovolve.Toolkit.Unity.UnityInstanceProvider" /> class.
            </summary>
      <param name="container">
            The container.
            </param>
      <param name="serviceType">
            Type of the service.
            </param>
      <param name="resolveName">
            Name of the resolve.
            </param>
      <exception cref="T:System.ArgumentNullException">
            The <paramref name="container" /> value is <c>null</c>.
            </exception>
      <exception cref="T:System.ArgumentNullException">
            The <paramref name="serviceType" /> value is <c>null</c>.
            </exception>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityInstanceProvider.GetInstance(System.ServiceModel.InstanceContext)">
      <summary>
            Returns a service object given the specified <see cref="T:System.ServiceModel.InstanceContext" /> object.
            </summary>
      <returns>
            A user-defined service object.
            </returns>
      <param name="instanceContext">
            The current <see cref="T:System.ServiceModel.InstanceContext" /> object.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityInstanceProvider.GetInstance(System.ServiceModel.InstanceContext,System.ServiceModel.Channels.Message)">
      <summary>
            Returns a service object given the specified <see cref="T:System.ServiceModel.InstanceContext" /> object.
            </summary>
      <returns>
            The service object.
            </returns>
      <param name="instanceContext">
            The current <see cref="T:System.ServiceModel.InstanceContext" /> object.
            </param>
      <param name="message">
            The message that triggered the creation of a service object.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityInstanceProvider.ReleaseInstance(System.ServiceModel.InstanceContext,System.Object)">
      <summary>
            Called when an <see cref="T:System.ServiceModel.InstanceContext" /> object recycles a service object.
            </summary>
      <param name="instanceContext">
            The service's instance context.
            </param>
      <param name="instance">
            The service object to be recycled.
            </param>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.UnityInstanceProvider.ResolveName">
      <summary>
            Gets or sets the name of the resolve.
            </summary>
      <value>
            The name of the resolve.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.UnityInstanceProvider.ServiceType">
      <summary>
            Gets or sets the type of the service.
            </summary>
      <value>
            The type of the service.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.UnityInstanceProvider.Container">
      <summary>
            Gets or sets the container.
            </summary>
      <value>
            The container.
            </value>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.UnityContainerResolver">
      <summary>
              The <see cref="T:Neovolve.Toolkit.Unity.UnityContainerResolver" />
              class is used to resolve a <see cref="T:Microsoft.Practices.Unity.IUnityContainer" /> instance from configuration.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityContainerResolver.Resolve">
      <summary>
              Resolves the container from configuration using the default configuration options.
            </summary>
      <returns>
              A <see cref="T:Microsoft.Practices.Unity.IUnityContainer" /> instance.
            </returns>
      <exception cref="T:System.Configuration.ConfigurationErrorsException">No container has been configured.</exception>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityContainerResolver.Resolve(Neovolve.Toolkit.Storage.IConfigurationStore,System.String,System.String)">
      <summary>
              Resolves the container from configuration using the specified configuration values.
            </summary>
      <param name="store">
              The configuration store.
            </param>
      <param name="unitySectionName">
              Name of the unity section.
            </param>
      <param name="containerName">
              Name of the container.
            </param>
      <returns>
              A <see cref="T:Microsoft.Practices.Unity.IUnityContainer" /> instance.
            </returns>
      <exception cref="T:System.Configuration.ConfigurationErrorsException">No container has been configured.</exception>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityContainerResolver.TryResolve(Microsoft.Practices.Unity.IUnityContainer@)">
      <summary>
              Tries to resolve a container.
            </summary>
      <param name="container">The resolved container.</param>
      <returns>
        <c>true</c> if the container could be resolved; otherwise <c>false</c>.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityContainerResolver.TryResolve(Microsoft.Practices.Unity.IUnityContainer@,Neovolve.Toolkit.Storage.IConfigurationStore,System.String,System.String)">
      <summary>
              Tries the resolve.
            </summary>
      <param name="container">The container.</param>
      <param name="store">The configuration store.</param>
      <param name="unitySectionName">Name of the unity section.</param>
      <param name="containerName">Name of the container.</param>
      <returns>
        <c>true</c> if the container could be resolved; otherwise <c>false</c>.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityContainerResolver.TryResolve(Microsoft.Practices.Unity.IUnityContainer@,System.String@,Neovolve.Toolkit.Storage.IConfigurationStore,System.String,System.String)">
      <summary>
              Tries to resolve the container.
            </summary>
      <param name="container">The container to resolve.</param>
      <param name="failureMessage">The failure message.</param>
      <param name="store">The configuration store.</param>
      <param name="unitySectionName">Name of the unity section.</param>
      <param name="containerName">Name of the container.</param>
      <returns>
        <c>true</c> if the container could be resolved; otherwise <c>false</c>.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityContainerResolver.ConfigureContainer(System.String@,Microsoft.Practices.Unity.IUnityContainer@,Neovolve.Toolkit.Storage.IConfigurationStore,System.String,System.String)">
      <summary>
            Configures the container.
            </summary>
      <param name="failureMessage">The failure message.</param>
      <param name="container">The container.</param>
      <param name="store">The store.</param>
      <param name="unitySectionName">Name of the unity section.</param>
      <param name="containerName">Name of the container.</param>
      <returns>
            A <see cref="T:System.Boolean" /> instance.
            </returns>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.ProxyParameterValueElement">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.ProxyParameterValueElement" />
              class is used to configure a Unity parameter value to be determined from a proxy value created by <see cref="T:Neovolve.Toolkit.Communication.ProxyManager`1" />.
            </summary>
      <remarks>
            A Unity build operation will be performed on named resolutions of <see cref="T:Neovolve.Toolkit.Communication.ProxyManager`1" /> if a value has been provided for <see cref="P:Neovolve.Toolkit.Unity.ProxyParameterValueElement.Name" />.
              A search will be performed for unnamed type registrations on the container for <see cref="T:Neovolve.Toolkit.Communication.ProxyManager`1" /> and then <see cref="T:Neovolve.Toolkit.Communication.ProxyHandler`1" />
              where no name is provided. A build operation that uses the <see cref="M:Neovolve.Toolkit.Communication.ProxyManager`1.#ctor(Neovolve.Toolkit.Communication.ProxyHandler{`0})" />
              constructor will be performed if a registration for either of these types is found. A build operation for the
              <see cref="M:Neovolve.Toolkit.Communication.ProxyManager`1.#ctor" /> constructor will be performed if none of these registrations can be found.
            </remarks>
      <example>
        <para>
            The following example demonstrates a simple usage of proxy injection that uses the default <see cref="T:Neovolve.Toolkit.Communication.ProxyManager`1" /> constructor.
              </para>
        <code lang="xml" title="Application configuration for simple proxy injection"><![CDATA[<?xml version="1.0"
                  encoding="utf-8" ?>
            <configuration>
              <configSections>
                <section name="unity"
                         type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
              </configSections>
              <unity>
                <sectionExtension type="Neovolve.Toolkit.Unity.SectionExtensionInitiator, Neovolve.Toolkit.Unity"/>
                <containers>
                  <container>
                    <extensions>
                      <add type="Neovolve.Toolkit.Unity.DisposableStrategyExtension, Neovolve.Toolkit.Unity"/>
                    </extensions>
                    <register type="Neovolve.Toolkit.Unity.IntegrationTests.Root, Neovolve.Toolkit.Unity.IntegrationTests">
                      <constructor>
                        <param name="tester">
                          <proxy/>
                        </param>
                      </constructor>
                    </register>
                  </container>
                </containers>
              </unity>
            </configuration>]]></code>
        <para>
            The following example demonstrates a named resolution of <see cref="T:Neovolve.Toolkit.Communication.ProxyManager`1" /> that results in using the 
                <see cref="M:Neovolve.Toolkit.Communication.ProxyManager`1.#ctor(Neovolve.Toolkit.Communication.ProxyHandler{`0})" /> constructor.
              </para>
        <code lang="xml" title="Application configuration for named proxy injection"><![CDATA[<?xml version="1.0"
                  encoding="utf-8" ?>
            <configuration>
              <configSections>
                <section name="unity"
                         type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
              </configSections>
              <unity>
                <sectionExtension type="Neovolve.Toolkit.Unity.SectionExtensionInitiator, Neovolve.Toolkit.Unity"/>
                <containers>
                  <container>
                    <extensions>
                      <add type="Neovolve.Toolkit.Unity.DisposableStrategyExtension, Neovolve.Toolkit.Unity"/>
                    </extensions>
                    <register type="Neovolve.Toolkit.Unity.IntegrationTests.ISecondDisposable, Neovolve.Toolkit.Unity.IntegrationTests"
                              mapTo="Neovolve.Toolkit.Unity.IntegrationTests.SecondDisposable, Neovolve.Toolkit.Unity.IntegrationTests"
                              name="NamedProxyTest">
                      <constructor>
                        <param name="third">
                          <!-- 
                              The parameter third on SecondDisposable is of type IThirdDisposable 
                              The resolution here will create ProxyManager<IThirdDisposable> and return a proxy of this type
                          -->
                          <proxy name="NamedProxy"/>
                        </param>
                      </constructor>
                    </register>
            
                    <register type="Neovolve.Toolkit.Communication.ProxyManager`1, Neovolve.Toolkit"
                              name="NamedProxy">
                      <constructor>
                        <param name="proxyHandler">
                          <dependency name="NamedProxyHandler"/>
                        </param>
                      </constructor>
                    </register>
            
                    <register type="Neovolve.Toolkit.Communication.ProxyHandler`1, Neovolve.Toolkit"
                              mapTo="Neovolve.Toolkit.Communication.DefaultProxyHandler`1, Neovolve.Toolkit"
                              name="NamedProxyHandler">
                      <constructor>
                        <param name="target">
                          <dependency/>
                        </param>
                      </constructor>
                    </register>
            
                    <register type="Neovolve.Toolkit.Unity.IntegrationTests.IThirdDisposable, Neovolve.Toolkit.Unity.IntegrationTests"
                              mapTo="Neovolve.Toolkit.Unity.IntegrationTests.ThirdDisposable, Neovolve.Toolkit.Unity.IntegrationTests">
                    </register>
            
                    <register type="Neovolve.Toolkit.Unity.IntegrationTests.IFourthDisposable, Neovolve.Toolkit.Unity.IntegrationTests"
                              mapTo="Neovolve.Toolkit.Unity.IntegrationTests.FourthDisposable, Neovolve.Toolkit.Unity.IntegrationTests"/>
            
                  </container>
                </containers>
              </unity>
            </configuration>]]></code>
        <para>
            The following example demonstrates an unnamed resolution of <see cref="T:Neovolve.Toolkit.Communication.ProxyManager`1" /> that results in using the 
                <see cref="M:Neovolve.Toolkit.Communication.ProxyManager`1.#ctor(Neovolve.Toolkit.Communication.ProxyHandler{`0})" /> constructor.
              </para>
        <code lang="xml" title="Application configuration for unnamed ProxyManager injection"><![CDATA[<?xml version="1.0"
                  encoding="utf-8" ?>
            <configuration>
              <configSections>
                <section name="unity"
                         type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
              </configSections>
              <unity>
                <sectionExtension type="Neovolve.Toolkit.Unity.SectionExtensionInitiator, Neovolve.Toolkit.Unity"/>
                <containers>
                  <container>
                    <extensions>
                      <add type="Neovolve.Toolkit.Unity.DisposableStrategyExtension, Neovolve.Toolkit.Unity"/>
                    </extensions>
                    <register type="Neovolve.Toolkit.Unity.IntegrationTests.ISecondDisposable, Neovolve.Toolkit.Unity.IntegrationTests"
                              mapTo="Neovolve.Toolkit.Unity.IntegrationTests.SecondDisposable, Neovolve.Toolkit.Unity.IntegrationTests"
                              name="NamedProxyTest">
                      <constructor>
                        <param name="third">
                          <!-- 
                              The parameter third on SecondDisposable is of type IThirdDisposable 
                              The resolution here will create ProxyManager<IThirdDisposable> and return a proxy of this type
                          -->
                          <proxy/>
                        </param>
                      </constructor>
                    </register>
            
                    <register type="Neovolve.Toolkit.Communication.ProxyManager`1, Neovolve.Toolkit">
                      <constructor>
                        <param name="proxyHandler">
                          <dependency name="NamedProxyHandler"/>
                        </param>
                      </constructor>
                    </register>
            
                    <register type="Neovolve.Toolkit.Communication.ProxyHandler`1, Neovolve.Toolkit"
                              mapTo="Neovolve.Toolkit.Communication.DefaultProxyHandler`1, Neovolve.Toolkit"
                              name="NamedProxyHandler">
                      <constructor>
                        <param name="target">
                          <dependency/>
                        </param>
                      </constructor>
                    </register>
            
                    <register type="Neovolve.Toolkit.Unity.IntegrationTests.IThirdDisposable, Neovolve.Toolkit.Unity.IntegrationTests"
                              mapTo="Neovolve.Toolkit.Unity.IntegrationTests.ThirdDisposable, Neovolve.Toolkit.Unity.IntegrationTests">
                    </register>
            
                    <register type="Neovolve.Toolkit.Unity.IntegrationTests.IFourthDisposable, Neovolve.Toolkit.Unity.IntegrationTests"
                              mapTo="Neovolve.Toolkit.Unity.IntegrationTests.FourthDisposable, Neovolve.Toolkit.Unity.IntegrationTests"/>
            
                  </container>
                </containers>
              </unity>
            </configuration>]]></code>
        <para>
            The following example demonstrates an unnamed resolution of <see cref="T:Neovolve.Toolkit.Communication.ProxyHandler`1" /> that results in using the 
                <see cref="M:Neovolve.Toolkit.Communication.ProxyManager`1.#ctor(Neovolve.Toolkit.Communication.ProxyHandler{`0})" /> constructor.
              </para>
        <code lang="xml" title="Application configuration for unnamed ProxyHandler injection"><![CDATA[<?xml version="1.0"
                  encoding="utf-8" ?>
            <configuration>
              <configSections>
                <section name="unity"
                         type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
              </configSections>
              <unity>
                <sectionExtension type="Neovolve.Toolkit.Unity.SectionExtensionInitiator, Neovolve.Toolkit.Unity"/>
                <containers>
                  <container>
                    <extensions>
                      <add type="Neovolve.Toolkit.Unity.DisposableStrategyExtension, Neovolve.Toolkit.Unity"/>
                    </extensions>
                    <register type="Neovolve.Toolkit.Unity.IntegrationTests.ISecondDisposable, Neovolve.Toolkit.Unity.IntegrationTests"
                              mapTo="Neovolve.Toolkit.Unity.IntegrationTests.SecondDisposable, Neovolve.Toolkit.Unity.IntegrationTests"
                              name="NamedProxyTest">
                      <constructor>
                        <param name="third">
                          <!-- 
                              The parameter third on SecondDisposable is of type IThirdDisposable 
                              The resolution here will create ProxyManager<IThirdDisposable> and return a proxy of this type
                          -->
                          <proxy/>
                        </param>
                      </constructor>
                    </register>
            
                    <register type="Neovolve.Toolkit.Communication.ProxyHandler`1, Neovolve.Toolkit"
                              mapTo="Neovolve.Toolkit.Communication.DefaultProxyHandler`1, Neovolve.Toolkit">
                      <constructor>
                        <param name="target">
                          <dependency/>
                        </param>
                      </constructor>
                    </register>
            
                    <register type="Neovolve.Toolkit.Unity.IntegrationTests.IThirdDisposable, Neovolve.Toolkit.Unity.IntegrationTests"
                              mapTo="Neovolve.Toolkit.Unity.IntegrationTests.ThirdDisposable, Neovolve.Toolkit.Unity.IntegrationTests">
                    </register>
            
                    <register type="Neovolve.Toolkit.Unity.IntegrationTests.IFourthDisposable, Neovolve.Toolkit.Unity.IntegrationTests"
                              mapTo="Neovolve.Toolkit.Unity.IntegrationTests.FourthDisposable, Neovolve.Toolkit.Unity.IntegrationTests"/>
            
                  </container>
                </containers>
              </unity>
            </configuration>]]></code>
      </example>
    </member>
    <member name="F:Neovolve.Toolkit.Unity.ProxyParameterValueElement.ElementName">
      <summary>
            Defines the configuration element name used to identify this type of parameter value element.
            </summary>
    </member>
    <member name="F:Neovolve.Toolkit.Unity.ProxyParameterValueElement.NameAttributeName">
      <summary>
            Defines the attribute name for the <see cref="P:Neovolve.Toolkit.Unity.ProxyParameterValueElement.Name" /> property.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.ProxyParameterValueElement.GetInjectionParameterValue(Microsoft.Practices.Unity.IUnityContainer,System.Type)">
      <summary>
            Generate an <see cref="T:Microsoft.Practices.Unity.InjectionParameterValue" /> object
              that will be used to configure the container for a type registration.
            </summary>
      <param name="container">
            Container that is being configured. Supplied in order
              to let custom implementations retrieve services; do not configure the container
              directly in this method.
            </param>
      <param name="parameterType">
            Type of the.
            </param>
      <returns>
            An <see cref="T:Microsoft.Practices.Unity.InjectionParameterValue" /> instance.
            </returns>
      <exception cref="T:System.ArgumentNullException">
            The <paramref name="parameterType" /> value is <c>null</c>.
            </exception>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.ProxyParameterValueElement.Name">
      <summary>
            Gets or sets the name of the dependency.
            </summary>
      <value>
            The name of the dependency.
            </value>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.ProxyDependencyResolverPolicy">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.ProxyDependencyResolverPolicy" />
              class is used to resolve a proxy dependency created by <see cref="T:Neovolve.Toolkit.Communication.ProxyManager`1" />.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.ProxyDependencyResolverPolicy.#ctor(System.Type,System.String)">
      <summary>
            Initializes a new instance of the <see cref="T:Neovolve.Toolkit.Unity.ProxyDependencyResolverPolicy" /> class.
            </summary>
      <param name="parameterType">
            Type of the parameter.
            </param>
      <param name="name">
            The name of the dependency.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.ProxyDependencyResolverPolicy.Resolve(Microsoft.Practices.ObjectBuilder2.IBuilderContext)">
      <summary>
            Resolves the specified context.
            </summary>
      <param name="context">
            The context.
            </param>
      <returns>
            A <see cref="T:System.Object" /> instance.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.ProxyDependencyResolverPolicy.ValidateProxyType(System.Type)">
      <summary>
            Validates the type of the proxy.
            </summary>
      <param name="parameterType">
            Type of the parameter.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.ProxyDependencyResolverPolicy.CreateProxyManager(Microsoft.Practices.ObjectBuilder2.IBuilderContext,Microsoft.Practices.ObjectBuilder2.NamedTypeBuildKey)">
      <summary>
            Creates the proxy manager.
            </summary>
      <param name="context">
            The context.
            </param>
      <param name="managerResolveBuildKey">
            The manager resolve build key.
            </param>
      <returns>
            A <see cref="T:System.Object" /> instance.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.ProxyDependencyResolverPolicy.GetProxyManagerBuildKey(Microsoft.Practices.ObjectBuilder2.IBuilderContext)">
      <summary>
            Gets the proxy manager build key.
            </summary>
      <param name="context">
            The context.
            </param>
      <returns>
            A <see cref="T:Microsoft.Practices.ObjectBuilder2.NamedTypeBuildKey" /> instance.
            </returns>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.ProxyDependencyResolverPolicy.Name">
      <summary>
            Gets the name of the dependency.
            </summary>
      <value>
            The name of the dependency.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.ProxyDependencyResolverPolicy.ParameterType">
      <summary>
            Gets the type of the parameter.
            </summary>
      <value>
            The type of the parameter.
            </value>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.ConnectionStringParameterValueElement">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.ConnectionStringParameterValueElement" />
              class is used to configure a Unity injection parameter value to be determined from a <see cref="T:System.Configuration.ConnectionStringSettings" /> value.
            </summary>
      <remarks>
        <para>
            The <see cref="T:Neovolve.Toolkit.Unity.ConnectionStringParameterValueElement" /> is configured for a container by the <see cref="T:Neovolve.Toolkit.Unity.SectionExtensionInitiator" /> class.
                It only supports injection of <see cref="T:System.String" />
                and <see cref="T:System.Configuration.ConnectionStringSettings" /> parameter types.
              </para>
        <note>
            The <see cref="T:Neovolve.Toolkit.Unity.SectionExtensionInitiator" /> class must be configured for the container in order for the connectionSetting injection element
                to be understood.
              </note>
        <para>
            Injecting a connection string value should use a string parameter as the injection value. 
                This will then decouple the dependency being created from the System.Configuration assembly. 
                The only time that the ConnectionStringSettings class should be used as the injection parameter type is when the provider information 
                on the connection setting is required for some application logic.
              </para>
      </remarks>
      <example>
        <para>
            The following example shows how the element is configured. 
              </para>
        <code lang="xml" title="Application configuration"><![CDATA[<?xml version="1.0"
                  encoding="utf-8" ?>
            <configuration>
              <configSections>
                <section name="unity"
                         type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
              </configSections>
              <connectionStrings>
                <add name="TestConnection" connectionString="Data Source=localhost;Database=SomeDatabase;Integrated Security=SSPI;"/>
              </connectionStrings>
              <unity>
                <sectionExtension type="Neovolve.Toolkit.Unity.SectionExtensionInitiator, Neovolve.Toolkit.Unity"/>
                <containers>
                  <container>
                    <register type="Neovolve.Toolkit.Unity.IntegrationTests.IDoSomething, Neovolve.Toolkit.Unity.IntegrationTests"
                              mapTo="Neovolve.Toolkit.Unity.IntegrationTests.ConnectionTest, Neovolve.Toolkit.Unity.IntegrationTests"
                              name="ConnectionSettingTesting">
                      <constructor>
                        <param name="connectionSetting">
                          <connectionSetting connectionStringKey="TestConnection"/>
                        </param>
                      </constructor>
                    </register>
                  </container>
                </containers>
              </unity>
            </configuration>]]></code>
      </example>
      <seealso cref="T:Neovolve.Toolkit.Unity.SectionExtensionInitiator" />
    </member>
    <member name="F:Neovolve.Toolkit.Unity.ConnectionStringParameterValueElement.ConnectionStringKeyAttributeName">
      <summary>
            Defines the attribute name for the <see cref="P:Neovolve.Toolkit.Unity.ConnectionStringParameterValueElement.ConnectionStringKey" /> property.
            </summary>
    </member>
    <member name="F:Neovolve.Toolkit.Unity.ConnectionStringParameterValueElement.ElementName">
      <summary>
            Defines the configuration element name used to identify this type of parameter value element.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.ConnectionStringParameterValueElement.#ctor">
      <summary>
            Initializes a new instance of the <see cref="T:Neovolve.Toolkit.Unity.ConnectionStringParameterValueElement" /> class.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.ConnectionStringParameterValueElement.CreateValue">
      <summary>
            Creates the value.
            </summary>
      <returns>
            A <see cref="T:System.String" /> instance.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.ConnectionStringParameterValueElement.GetInjectionParameterValue(Microsoft.Practices.Unity.IUnityContainer,System.Type)">
      <summary>
            Generate an <see cref="T:Microsoft.Practices.Unity.InjectionParameterValue" /> object
              that will be used to configure the container for a type registration.
            </summary>
      <param name="container">
            Container that is being configured. Supplied in order
              to let custom implementations retrieve services; do not configure the container
              directly in this method.
            </param>
      <param name="parameterType">
            Type of the.
            </param>
      <returns>
            An <see cref="T:Microsoft.Practices.Unity.InjectionParameterValue" /> instance.
            </returns>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.ConnectionStringParameterValueElement.ConnectionStringKey">
      <summary>
            Gets or sets the connection string key.
            </summary>
      <value>
            The connection string key.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.ConnectionStringParameterValueElement.Config">
      <summary>
            Gets or sets the config.
            </summary>
      <value>
            The config.
            </value>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.DeferredResolutionTracker`1">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.DeferredResolutionTracker`1" />
              class is used to manage deferred resolution functions to ensure that build trees
              contain references to lazy loaded instances.
            </summary>
      <typeparam name="T">
            The type of instance being resolved.
            </typeparam>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.DeferredResolutionTracker`1.#ctor(System.Func{`0},Neovolve.Toolkit.Unity.IBuildTreeStore,Neovolve.Toolkit.Unity.BuildTreeItemNode)">
      <summary>
            Initializes a new instance of the <see cref="T:Neovolve.Toolkit.Unity.DeferredResolutionTracker`1" /> class. 
            </summary>
      <param name="resolutionFunction">
            The resolution function.
            </param>
      <param name="buildTreeStore">
            The build tree store.
            </param>
      <param name="parentNode">
            The parent node.
            </param>
      <requires exception="T:System.ArgumentNullException">resolutionFunction != null</requires>
      <exception cref="T:System.ArgumentNullException">resolutionFunction == null</exception>
      <requires exception="T:System.ArgumentNullException">buildTreeStore != null</requires>
      <exception cref="T:System.ArgumentNullException">buildTreeStore == null</exception>
      <requires exception="T:System.ArgumentNullException">parentNode != null</requires>
      <exception cref="T:System.ArgumentNullException">parentNode == null</exception>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.DeferredResolutionTracker`1.Resolve">
      <summary>
            Resolves this instance.
            </summary>
      <returns>
            The resolved instance.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.DeferredResolutionTracker`1.IsDeferredBuildTreeReference(Neovolve.Toolkit.Unity.BuildTreeItemNode,`0)">
      <summary>
            Determines whether the specified build tree is related to the resolved instance.
            </summary>
      <param name="buildTreeNode">
            The build tree node.
            </param>
      <param name="resolvedInstance">
            The resolved instance.
            </param>
      <returns>
        <c>true</c> if the specified build tree is related to the resolved instance; otherwise, <c>false</c>.
            </returns>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.DeferredResolutionTracker`1.ParentNode">
      <summary>
            Gets or sets the parent node.
            </summary>
      <value>
            The parent node.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.DeferredResolutionTracker`1.ResolutionFunction">
      <summary>
            Gets or sets the resolution function.
            </summary>
      <value>
            The resolution function.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.DeferredResolutionTracker`1.TreeStore">
      <summary>
            Gets or sets the tree store.
            </summary>
      <value>
            The tree store.
            </value>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.Properties.Resources">
      <summary>
              A strongly-typed resource class, for looking up localized strings, etc.
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.Properties.Resources.ResourceManager">
      <summary>
              Returns the cached ResourceManager instance used by this class.
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.Properties.Resources.Culture">
      <summary>
              Overrides the current thread's CurrentUICulture property for all
              resource lookups using this strongly typed resource class.
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.Properties.Resources.AppSettingsParameterValueElement_CannotConvertAppSettingValue">
      <summary>
              Looks up a localized string similar to The application setting with key '{0}' and value '{1}' cannot be converted to type '{2}'.
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.Properties.Resources.AppSettingsParameterValueElement_InvalidType">
      <summary>
              Looks up a localized string similar to The type '{0}' does not inherit from '{1}'..
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.Properties.Resources.AppSettingsParameterValueElement_TypeLoadFailure">
      <summary>
              Looks up a localized string similar to The type '{0}' could not be loaded..
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.Properties.Resources.BuildTreeNode_InstanceAlreadyAssigned_ExceptionMessage">
      <summary>
              Looks up a localized string similar to An instance has already been assigned to this node..
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.Properties.Resources.BuildTreeTracker_BuildTreeConstructedOutOfOrder">
      <summary>
              Looks up a localized string similar to Build tree constructed out of order. Build key '{0}' was expected but build key '{1}' was provided..
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.Properties.Resources.ConnectionStringParameterValueElement_ConnectionStringKeyNotFound">
      <summary>
              Looks up a localized string similar to No connection string configuration found for key '{0}'..
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.Properties.Resources.ConnectionStringParameterValueElement_InvalidParameterType">
      <summary>
              Looks up a localized string similar to Connection string injection only supports the String and ConnectionStringSettings types but injection is requested for the type '{0}'..
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.Properties.Resources.NullValueMarker">
      <summary>
              Looks up a localized string similar to (null).
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.Properties.Resources.ProxyDependencyResolverPolicy_TypeNotInterfaceOrMarshalByRefObject_ExceptionMessageFormat">
      <summary>
              Looks up a localized string similar to The parameter type '{0}' must be an interface or inherit from MarshalByRefObject to have a proxy created for it..
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.Properties.Resources.UnityContainerResolver_ConfigurationSectionNotFound">
      <summary>
              Looks up a localized string similar to No Unity configuration was found..
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.Properties.Resources.UnityContainerResolver_DefaultContainerNotFound">
      <summary>
              Looks up a localized string similar to The default Unity container was not found in configuration..
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.Properties.Resources.UnityContainerResolver_NamedContainerNotFound">
      <summary>
              Looks up a localized string similar to No Unity container with the name '{0}' was not found in configuration..
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.Properties.Resources.UnityContainerResolver_NoContainerConfigured">
      <summary>
              Looks up a localized string similar to No Unity containers have been configured..
            </summary>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.BuildTreeDisposer">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.BuildTreeDisposer" />
              class is used to dispose build trees.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeDisposer.DisposeTree(Microsoft.Practices.ObjectBuilder2.IBuilderContext,Neovolve.Toolkit.Unity.BuildTreeItemNode)">
      <summary>
            Disposes the tree.
            </summary>
      <param name="context">
            The context.
            </param>
      <param name="buildTree">
            The build tree.
            </param>
      <requires exception="T:System.ArgumentNullException">buildTree != null</requires>
      <exception cref="T:System.ArgumentNullException">buildTree == null</exception>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeDisposer.DisposeInstance(System.WeakReference)">
      <summary>
            Disposes the instance.
            </summary>
      <param name="instanceReference">
            The instance reference.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeDisposer.DisposeInstance(System.Object)">
      <summary>
            Disposes the instance.
            </summary>
      <param name="instance">
            The instance.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeDisposer.InstanceExistsInLifetimeManager(Microsoft.Practices.ObjectBuilder2.IBuilderContext,System.WeakReference)">
      <summary>
            Instances the exists in lifetime manager.
            </summary>
      <param name="context">
            The context.
            </param>
      <param name="instanceReference">
            The instance reference.
            </param>
      <returns>
            A <see cref="T:System.Boolean" /> instance.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeDisposer.TeardownTreeNode(Microsoft.Practices.ObjectBuilder2.IBuilderContext,Neovolve.Toolkit.Unity.BuildTreeItemNode)">
      <summary>
            Teardowns the tree node.
            </summary>
      <param name="context">
            The context.
            </param>
      <param name="treeNode">
            The tree node.
            </param>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.DomainContainer">
      <summary>
              The <see cref="T:Neovolve.Toolkit.Unity.DomainContainer" />
              class is used to provide an <see cref="T:Microsoft.Practices.Unity.IUnityContainer" /> instance for the current <see cref="T:System.AppDomain" />.
            </summary>
    </member>
    <member name="F:Neovolve.Toolkit.Unity.DomainContainer._syncLock">
      <summary>
              Defines the object used to protect the container.
            </summary>
    </member>
    <member name="F:Neovolve.Toolkit.Unity.DomainContainer._domainContainer">
      <summary>
              Stores the container managed for the current app domain.
            </summary>
    </member>
    <member name="F:Neovolve.Toolkit.Unity.DomainContainer._resolutionAttemptMade">
      <summary>
              Stores whether a resolution attempt has been made.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.DomainContainer.Destroy">
      <summary>
              Destroys the container held for the current <see cref="T:System.AppDomain" />.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.DomainContainer.TryGetCurrent(Microsoft.Practices.Unity.IUnityContainer@)">
      <summary>
              Tries to get the current container.
            </summary>
      <param name="container">The container.</param>
      <returns>
              A <see cref="T:System.Boolean" /> instance.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.DomainContainer.CreateContainer">
      <summary>
              Creates the container.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.DomainContainer.CreateOptionalContainer">
      <summary>
              Creates the container.
            </summary>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.DomainContainer.Current">
      <summary>
              Gets the container for the current <see cref="T:System.AppDomain" />.
            </summary>
      <value>
              The current container.
            </value>
      <exception cref="T:System.Configuration.ConfigurationErrorsException">No container has been configured.</exception>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.UnityServiceBehavior">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.UnityServiceBehavior" />
              class is used to provide a service behavior for configuring unity injection in WCF.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityServiceBehavior.#ctor(Microsoft.Practices.Unity.IUnityContainer)">
      <summary>
            Initializes a new instance of the <see cref="T:Neovolve.Toolkit.Unity.UnityServiceBehavior" /> class.
            </summary>
      <param name="container">
            The container.
            </param>
      <exception cref="T:System.ArgumentNullException">
            The <paramref name="container" /> value is <c>null</c>.
            </exception>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityServiceBehavior.#ctor(Microsoft.Practices.Unity.IUnityContainer,System.String)">
      <summary>
            Initializes a new instance of the <see cref="T:Neovolve.Toolkit.Unity.UnityServiceBehavior" /> class.
            </summary>
      <param name="container">
            The container.
            </param>
      <param name="unityResolveName">
            Name of the unity resolve.
            </param>
      <exception cref="T:System.ArgumentNullException">
            The <paramref name="container" /> value is <c>null</c>.
            </exception>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityServiceBehavior.AddBindingParameters(System.ServiceModel.Description.ServiceDescription,System.ServiceModel.ServiceHostBase,System.Collections.ObjectModel.Collection{System.ServiceModel.Description.ServiceEndpoint},System.ServiceModel.Channels.BindingParameterCollection)">
      <summary>
            Provides the ability to pass custom data to binding elements to support the contract implementation.
            </summary>
      <param name="serviceDescription">
            The service description of the service.
            </param>
      <param name="serviceHostBase">
            The host of the service.
            </param>
      <param name="endpoints">
            The service endpoints.
            </param>
      <param name="bindingParameters">
            Custom objects to which binding elements have access.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityServiceBehavior.ApplyDispatchBehavior(System.ServiceModel.Description.ServiceDescription,System.ServiceModel.ServiceHostBase)">
      <summary>
            Provides the ability to change run-time property values or insert custom extension objects such as error handlers, message or parameter interceptors,
              security extensions, and other custom extension objects.
            </summary>
      <param name="serviceDescription">
            The service description.
            </param>
      <param name="serviceHostBase">
            The host that is currently being built.
            </param>
      <exception cref="T:System.ArgumentNullException">
            The <paramref name="serviceDescription" /> value is <c>null</c>.
            </exception>
      <exception cref="T:System.ArgumentNullException">
            The <paramref name="serviceHostBase" /> value is <c>null</c>.
            </exception>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.UnityServiceBehavior.Validate(System.ServiceModel.Description.ServiceDescription,System.ServiceModel.ServiceHostBase)">
      <summary>
            Provides the ability to inspect the service host and the service description to confirm that the service can run successfully.
            </summary>
      <param name="serviceDescription">
            The service description.
            </param>
      <param name="serviceHostBase">
            The service host that is currently being constructed.
            </param>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.UnityServiceBehavior.Container">
      <summary>
            Gets or sets the container.
            </summary>
      <value>
            The container.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.UnityServiceBehavior.ResolveName">
      <summary>
            Gets or sets the name of the resolve.
            </summary>
      <value>
            The name of the resolve.
            </value>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.DisposableStrategyExtension">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.DisposableStrategyExtension" />
              class is used to define the build strategy for disposing objects on tear down by a <see cref="T:Microsoft.Practices.Unity.IUnityContainer" />.
            </summary>
      <remarks>
        <para>
            The <see cref="T:Neovolve.Toolkit.Unity.DisposableStrategyExtension" /> tracks build trees as instances are created by a container due to either a <see cref="M:Microsoft.Practices.Unity.IUnityContainer.Resolve(System.Type,System.String,Microsoft.Practices.Unity.ResolverOverride[])" /> 
                or <see cref="M:Microsoft.Practices.Unity.IUnityContainer.BuildUp(System.Type,System.Object,System.String,Microsoft.Practices.Unity.ResolverOverride[])" /> invocations. The extension then disposes instances in a build tree when <see cref="M:Microsoft.Practices.Unity.IUnityContainer.Teardown(System.Object)" />
                is invoked on an instance resolved by the container, built up by the container or when the container is disposed.
              </para>
        <note>
            This extension should be configured on containers that are used by Neovolve.Toolkit.Server.Unity.UnityServiceHostFactory, 
                <see cref="T:Neovolve.Toolkit.Unity.UnityServiceElement" /> or 
                Neovolve.Toolkit.Server.Unity.UnityHttpModule.
              </note>
        <para>
            A build tree identifies the hierarchy of instances as they are injected into other instances. 
                The root of a build tree is unique to a combination of a <see cref="T:Microsoft.Practices.ObjectBuilder2.NamedTypeBuildKey" /> and an object instance. 
                Child nodes in a build tree may not be unique to a build tree due to a <see cref="T:Microsoft.Practices.ObjectBuilder2.ILifetimePolicy" /> 
                in the container returning an existing instance rather than creating a new instance. 
                For example, the <see cref="T:Microsoft.Practices.Unity.ContainerControlledLifetimeManager" /> will ensure that the same instance for a build key is returned rather than creating
                a new instance. In this case the same instance (for the build key) may exist multiple times within a build tree and/or across multiple build trees.
              </para>
        <para>
            When <see cref="M:Microsoft.Practices.Unity.IUnityContainer.Teardown(System.Object)" /> is invoked on a container, the <see cref="T:Neovolve.Toolkit.Unity.DisposableStrategyExtension" /> will attempt to find the instance
                as a root node in the set of build trees created by the container. When a build tree is found, a top-down recursive disposal pattern is used to tear down each
                instance in the build tree according to a set of disposal rules.
              </para>
        <para>
            The tear down process has the following behaviors:
                <list type="bullet"><item><description>Any <see cref="T:System.ObjectDisposedException" /> thrown on <see cref="M:System.IDisposable.Dispose" /> is caught and ignored.</description></item><item><description>Build trees are removed when they are torn down.</description></item><item><description>Build trees are removed if their root instances have been garbage collected.</description></item><item><description>All build trees are disposed when the <see cref="T:Microsoft.Practices.Unity.IUnityContainer" /> is disposed.</description></item></list>
            .
              </para>
        <para>
            The following disposal rules are used to tear down a build tree:
                <list type="number"><item><description>The instance being torn down must exist as the root instance of a build tree.</description></item><item><description>The root node is skipped if it was not created by the container (meaning it was built up by the container).</description></item><item><description>Tree nodes are skipped if they are found in a <see cref="T:Microsoft.Practices.ObjectBuilder2.ILifetimePolicy" />.
                    </description></item><item><description>Child nodes of tree nodes that are in a <see cref="T:Microsoft.Practices.ObjectBuilder2.ILifetimePolicy" /> are skipped.</description></item><item><description>Tree nodes already claimed by the garbage collector are skipped.</description></item></list></para>
      </remarks>
      <example>
        <para>
            The <see cref="T:Neovolve.Toolkit.Unity.DisposableStrategyExtension" /> can be configured via the application configuration or at runtime.
              </para>
        <code lang="xml" title="Extension added via configuration"><![CDATA[<?xml version="1.0" ?>
            <configuration>
                <configSections>
                    <section name="unity"
                             type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
                </configSections>
                <unity>
                    <containers>
                        <container>
                            <register type="System.Security.Cryptography.HashAlgorithm, mscorlib"
                                      mapTo="System.Security.Cryptography.SHA256CryptoServiceProvider, System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
                            <extensions>
                                <add type="Neovolve.Toolkit.Unity.DisposableStrategyExtension, Neovolve.Toolkit.Unity"/>
                            </extensions>
                        </container>
                    </containers>
                </unity>
            </configuration>
            ]]></code>
        <para>
            The <see cref="T:Neovolve.Toolkit.Unity.DisposableStrategyExtension" /> can be configured for a <see cref="T:Microsoft.Practices.Unity.IUnityContainer" /> at runtime.
              </para>
        <code lang="c#" title="Extension added at runtime"><![CDATA[public void ExampleExtensionUsage()
            {
                IDisposableType actual;
            
                using (UnityContainer container = new UnityContainer())
                {
                    using (DisposableStrategyExtension disposableStrategyExtension = new DisposableStrategyExtension())
                    {
                        container.AddExtension(disposableStrategyExtension);
                        container.RegisterType(typeof(IDisposableType), typeof(DisposableType), new TransientLifetimeManager());
            
                        actual = container.Resolve<IDisposableType>();
            
                        container.Teardown(actual);
                    }
                }
            }]]></code>
      </example>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.DisposableStrategyExtension.#ctor">
      <summary>
              Initializes a new instance of the <see cref="T:Neovolve.Toolkit.Unity.DisposableStrategyExtension" /> class.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.DisposableStrategyExtension.#ctor(Neovolve.Toolkit.Unity.IBuildTreeTracker)">
      <summary>
            Initializes a new instance of the <see cref="T:Neovolve.Toolkit.Unity.DisposableStrategyExtension" /> class.
            </summary>
      <param name="buildTreeTracker">
            The build tree tracker.
            </param>
      <requires exception="T:System.ArgumentNullException">buildTreeTracker != null</requires>
      <exception cref="T:System.ArgumentNullException">buildTreeTracker == null</exception>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.DisposableStrategyExtension.Dispose">
      <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.DisposableStrategyExtension.Dispose(System.Boolean)">
      <summary>
            Releases unmanaged and - optionally - managed resources.
            </summary>
      <param name="disposing">
        <c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.DisposableStrategyExtension.Initialize">
      <summary>
            Initial the container with this extension's functionality.
            </summary>
      <remarks>
            When overridden in a derived class, this method will modify the given
              <see cref="T:Microsoft.Practices.Unity.ExtensionContext" /> by adding strategies, policies, etc. to
              install it's functions into the container.
            </remarks>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.DisposableStrategyExtension.TreeTracker">
      <summary>
              Gets or sets the tree tracker.
            </summary>
      <value>
              The tree tracker.
            </value>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.BuildTreeItemNode">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.BuildTreeItemNode" />
              class is used to define a build tree item and its children.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeItemNode.#ctor(Microsoft.Practices.ObjectBuilder2.NamedTypeBuildKey,System.Boolean,Neovolve.Toolkit.Unity.BuildTreeItemNode)">
      <summary>
            Initializes a new instance of the <see cref="T:Neovolve.Toolkit.Unity.BuildTreeItemNode" /> class.
            </summary>
      <param name="buildKey">
            The build key.
            </param>
      <param name="nodeCreatedByContainer">
            If set to <c>true</c>, the node was created by container.
            </param>
      <param name="parentNode">
            The parent node.
            </param>
      <requires exception="T:System.ArgumentNullException">buildKey != null</requires>
      <exception cref="T:System.ArgumentNullException">buildKey == null</exception>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeItemNode.AssignInstance(System.Object)">
      <summary>
            Assigns the instance.
            </summary>
      <param name="instance">
            The instance.
            </param>
      <exception cref="T:System.ArgumentException">
            An instance has already been assign to this node.
            </exception>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.BuildTreeItemNode.BuildKey">
      <summary>
            Gets the build key.
            </summary>
      <value>
            The build key.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.BuildTreeItemNode.Children">
      <summary>
            Gets the children.
            </summary>
      <value>
            The children.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.BuildTreeItemNode.ItemReference">
      <summary>
            Gets the item reference.
            </summary>
      <value>
            The item reference.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.BuildTreeItemNode.NodeCreatedByContainer">
      <summary>
            Gets a value indicating whether the node was created by container.
            </summary>
      <value>
        <c>true</c> if the node was created by container; otherwise, <c>false</c>.
            </value>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.BuildTreeItemNode.Parent">
      <summary>
            Gets the parent.
            </summary>
      <value>
            The parent.
            </value>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.BuildTreeStore">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.BuildTreeStore" />
              class is used to store build trees.
            </summary>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.IBuildTreeStore">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.IBuildTreeStore" />
              interface is used to manage the storage of build trees.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.IBuildTreeStore.Add(Neovolve.Toolkit.Unity.BuildTreeItemNode)">
      <summary>
            Adds the specified build tree.
            </summary>
      <param name="buildTree">
            The build tree.
            </param>
      <requires exception="T:System.ArgumentNullException">buildTree != null</requires>
      <exception cref="T:System.ArgumentNullException">buildTree == null</exception>
      <requires exception="T:System.ArgumentNullException">buildTree.ItemReference != null</requires>
      <exception cref="T:System.ArgumentNullException">buildTree.ItemReference == null</exception>
      <requires exception="T:System.ArgumentNullException">buildTree.ItemReference.IsAlive</requires>
      <exception cref="T:System.ArgumentNullException">!(buildTree.ItemReference.IsAlive)</exception>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.IBuildTreeStore.GetBuildTreeForInstance(System.Object)">
      <summary>
            Gets the build tree for instance.
            </summary>
      <param name="instance">
            The instance.
            </param>
      <returns>
            A <see cref="T:Neovolve.Toolkit.Unity.BuildTreeItemNode" /> instance.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.IBuildTreeStore.GetBuildTrees">
      <summary>
            Gets the build trees.
            </summary>
      <returns>
            A <see cref="T:System.Collections.Generic.IEnumerable`1" /> instance.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.IBuildTreeStore.Remove(Neovolve.Toolkit.Unity.BuildTreeItemNode)">
      <summary>
            Removes the specified build tree.
            </summary>
      <param name="buildTree">
            The build tree.
            </param>
    </member>
    <member name="F:Neovolve.Toolkit.Unity.BuildTreeStore._lock">
      <summary>
            Defines the lock used to protect the list of build trees.
            </summary>
    </member>
    <member name="F:Neovolve.Toolkit.Unity.BuildTreeStore._buildTrees">
      <summary>
            Stores the build trees created by the current container.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeStore.Add(Neovolve.Toolkit.Unity.BuildTreeItemNode)">
      <summary>
            Adds the specified build tree.
            </summary>
      <param name="buildTree">
            The build tree.
            </param>
      <requires inheritedFrom="M:Neovolve.Toolkit.Unity.IBuildTreeStore.Add(Neovolve.Toolkit.Unity.BuildTreeItemNode)" inheritedFromTypeName="IBuildTreeStore" exception="T:System.ArgumentNullException">buildTree != null</requires>
      <exception cref="T:System.ArgumentNullException">buildTree == null</exception>
      <requires inheritedFrom="M:Neovolve.Toolkit.Unity.IBuildTreeStore.Add(Neovolve.Toolkit.Unity.BuildTreeItemNode)" inheritedFromTypeName="IBuildTreeStore" exception="T:System.ArgumentNullException">buildTree.ItemReference != null</requires>
      <exception cref="T:System.ArgumentNullException">buildTree.ItemReference == null</exception>
      <requires inheritedFrom="M:Neovolve.Toolkit.Unity.IBuildTreeStore.Add(Neovolve.Toolkit.Unity.BuildTreeItemNode)" inheritedFromTypeName="IBuildTreeStore" exception="T:System.ArgumentNullException">buildTree.ItemReference.IsAlive</requires>
      <exception cref="T:System.ArgumentNullException">!(buildTree.ItemReference.IsAlive)</exception>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeStore.GetBuildTreeForInstance(System.Object)">
      <summary>
            Gets the build tree for instance.
            </summary>
      <param name="instance">
            The instance.
            </param>
      <returns>
            A <see cref="T:Neovolve.Toolkit.Unity.BuildTreeItemNode" /> instance.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeStore.GetBuildTrees">
      <summary>
            Gets the build trees.
            </summary>
      <returns>
            A <see cref="T:System.Collections.Generic.IEnumerable`1" /> instance.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeStore.Remove(Neovolve.Toolkit.Unity.BuildTreeItemNode)">
      <summary>
            Removes the specified build tree.
            </summary>
      <param name="buildTree">
            The build tree.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeStore.GetExistingBuildTreeInternal(System.Object)">
      <summary>
            Gets the existing build tree internal.
            </summary>
      <param name="instance">
            The instance.
            </param>
      <returns>
            A <see cref="T:Neovolve.Toolkit.Unity.BuildTreeItemNode" /> instance.
            </returns>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.ProxyInjectionParameterValue">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.ProxyInjectionParameterValue" />
              class is used to provide the parameter value information for a proxy injection parameter.
            </summary>
      <remarks>
            A Unity build operation will be performed on named resolutions of <see cref="T:Neovolve.Toolkit.Communication.ProxyManager`1" /> if a value has been provided for <see cref="P:Neovolve.Toolkit.Unity.ProxyInjectionParameterValue.Name" />.
              A search will be performed for unnamed type registrations on the container for <see cref="T:Neovolve.Toolkit.Communication.ProxyManager`1" /> and then <see cref="T:Neovolve.Toolkit.Communication.ProxyHandler`1" />
              where no name is provided. A build operation that uses the <see cref="M:Neovolve.Toolkit.Communication.ProxyManager`1.#ctor(Neovolve.Toolkit.Communication.ProxyHandler{`0})" />
              constructor will be performed if a registration for either of these types is found. A build operation for the
              <see cref="T:Neovolve.Toolkit.Communication.ProxyManager`1" /> constructor will be performed if none of these registrations can be found.
            </remarks>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.ProxyInjectionParameterValue.#ctor(System.Type)">
      <summary>
            Initializes a new instance of the <see cref="T:Neovolve.Toolkit.Unity.ProxyInjectionParameterValue" /> class.
            </summary>
      <param name="parameterType">
            Type of the parameter.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.ProxyInjectionParameterValue.#ctor(System.Type,System.String)">
      <summary>
            Initializes a new instance of the <see cref="T:Neovolve.Toolkit.Unity.ProxyInjectionParameterValue" /> class.
            </summary>
      <param name="parameterType">
            Type of the parameter.
            </param>
      <param name="name">
            The name of the dependency.
            </param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.ProxyInjectionParameterValue.GetResolverPolicy(System.Type)">
      <summary>
            Return a
              <see cref="T:Microsoft.Practices.ObjectBuilder2.IDependencyResolverPolicy" />
              instance that will return this types value for the parameter.
            </summary>
      <param name="typeToBuild">
            Type that contains the member that needs this parameter. Used
              to resolve open generic parameters.
            </param>
      <returns>
            The <see cref="T:Microsoft.Practices.ObjectBuilder2.IDependencyResolverPolicy" />.
            </returns>
    </member>
    <member name="P:Neovolve.Toolkit.Unity.ProxyInjectionParameterValue.Name">
      <summary>
            Gets the name of the dependency.
            </summary>
      <value>
            The name of the dependency.
            </value>
    </member>
    <member name="T:Neovolve.Toolkit.Unity.BuildTreeStoreContracts">
      <summary>
            The <see cref="T:Neovolve.Toolkit.Unity.BuildTreeStoreContracts" />
            class is used to define the contracts for the <see cref="T:Neovolve.Toolkit.Unity.IBuildTreeStore" /> interface.
            </summary>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeStoreContracts.Add(Neovolve.Toolkit.Unity.BuildTreeItemNode)">
      <summary>
            Adds the specified build tree.
            </summary>
      <param name="buildTree">The build tree.</param>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeStoreContracts.GetBuildTreeForInstance(System.Object)">
      <summary>
            Gets the build tree for instance.
            </summary>
      <param name="instance">The instance.</param>
      <returns>
            A <see cref="T:Neovolve.Toolkit.Unity.BuildTreeItemNode" /> instance.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeStoreContracts.GetBuildTrees">
      <summary>
            Gets the build trees.
            </summary>
      <returns>
            A <see cref="T:System.Collections.Generic.IEnumerable`1" /> instance.
            </returns>
    </member>
    <member name="M:Neovolve.Toolkit.Unity.BuildTreeStoreContracts.Remove(Neovolve.Toolkit.Unity.BuildTreeItemNode)">
      <summary>
            Removes the specified build tree.
            </summary>
      <param name="buildTree">The build tree.</param>
    </member>
  </members>
</doc>